import java.util.ArrayList;

/**
 * SecuritySnort
 * This interface will outline the key features of a Command object
 * and what is required of it.
 *
 * @author Jonathan Buttner
 * @version Jan 20, 2010
 */
public abstract class Command
{
	/**************************************************************************
	 * 							Globals
	 *************************************************************************/
	protected String _name;
	protected String _desc;
	
	/**************************************************************************
	 * 							Constructors
	 *************************************************************************/
	
	/**************************************************************************
	 * 							Public Methods
	 *************************************************************************/
	/**
	 * This method will set the name of the command.
	 * 
	 * @param name is the new name of the command.
	 */
	public void setName( String name )
	{
		_name = name;
	}
	
	/**
	 * This method will set the description of the command.
	 * 
	 * @param desc is the new description of the command.
	 */
	public void setDesc( String desc )
	{
		_desc = desc;
	}
	
	/**
	 * This method will return the name of the command.
	 * 
	 * @return _name is a String holding the name of the command.
	 */
	public String getName()
	{
		return _name;
	}
	
	/**
	 * This method will return the description of the command.
	 * 
	 * @return _desc is a String holding the name of the command.
	 */
	public String getDisc()
	{
		return _desc;
	}
	
	/**************************************************************************
	 * 							Abstract Methods
	 *************************************************************************/
	/**
	 * This method will be called to execute the Command object's details.
	 * 
	 * @param cmdLine is the user input from the command line.
	 */
	public abstract void exeCommand( ArrayList < String > cmdLine );
}
